package hao.bk.searchMap;

import java.util.List;

import hao.bk.royalmap.ExtendedTextView;
import hao.bk.royalmap.RoyalMapActivity;
import hao.bk.royalmap.R;
import hao.bk.sql.bo.Location;
import hao.bk.utils.ScreenUtils;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * adapter: tùy biến cho danh sách location bao gồm 3 thành phần cho một dòng: 1.
 * ImageView: biểu diễn logo location 2. TextView: tên shop 3. ImageView:
 * Đại diện cho sự lựa chọn yêu thích
 * 
 * @author haoDV
 * 
 */
public class LocalShopAdapter extends ArrayAdapter<Location>{
	
	private RoyalMapActivity context;
	private List<Location> locationList;

	public LocalShopAdapter(RoyalMapActivity context, int resource,
			List<Location> locationList) {
		super(context, resource, locationList);
		this.context = context;
		this.locationList = locationList;
	}
	
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {

		final Location rowItem = getItem(position);
		ViewHolder holder = null;
		LayoutInflater mInflater = context.getLayoutInflater();
		if (convertView == null) {
			convertView = mInflater.inflate(
					R.layout.local_shop_list_item, null);
			holder = new ViewHolder();
			holder.locationLogo = (ImageView) convertView
					.findViewById(R.id.typeshop_logo_image);
			holder.locationName = (TextView) convertView
					.findViewById(R.id.searchmap_locations_name);
			holder.locationAddress = (ExtendedTextView) convertView
					.findViewById(R.id.searchmap_locations_address);
			holder.locationCheckboxIv = (ImageView) convertView
					.findViewById(R.id.searchmap_selector_shop_iv);
			holder.locationCheckboxLL = (LinearLayout) convertView
					.findViewById(R.id.searchmap_selector_shop_ll);
			convertView.setTag(holder);
		} else {
			holder = (ViewHolder) convertView.getTag();
		}

		// Thay đổi kích thước của logo
		/** Lấy về ảnh tương ứng với location
		holder.locationLogo.setImageResource(LogoMapping
				.getIconLogoResourceId(rowItem.getLogo()));
		*/
		//holder.locationLogo.setImageResource(context.getResources().getDrawable(R.drawable.ic_launcher));
		holder.locationName.setText(rowItem.getName());
		holder.locationName
				.setTypeface(RoyalMapActivity.fontSegoeB);
		
		/** Lấy về địa chỉ location*/
		holder.locationAddress.setText(rowItem.getAddress()); 

		// Thiết lập lại các icon cho image
		SearchMapGeneralLayout.updateFavoriteIcon(holder.locationCheckboxIv,
				rowItem.isFavorite());
		
		/**
		// 
		OnClickListener onClickFavorite = new OnClickListener() {

			@Override
			public void onClick(View v) {
				updateFavorite(v);
			}
		};
		*/
		//holder.locationCheckboxLL.setOnClickListener(onClickFavorite);
		//holder.locationCheckboxLL.setTag(rowItem);

		// Thiết lập chiều cao của từng item
		AbsListView.LayoutParams param = new AbsListView.LayoutParams(
				LayoutParams.MATCH_PARENT, 85);
		convertView.setLayoutParams(param);
		return convertView;
	}

	@Override
	public Location getItem(int position) {
		return locationList.get(position);
	}

	@Override
	public int getCount() {
		return locationList.size();
	}

	/**
	 * Cập nhật favorite vào database
	 * 
	 * @author haoDv
	 * 
	 */
	private void updateFavorite(View view) {
		Location rowItem = (Location) view.getTag();
		// Cập nhật lại trạng thái favorite
		rowItem.setFavorite(!rowItem.isFavorite());

		// Cập nhật trạng thái của ảnh
		ImageView imageView = (ImageView) view
				.findViewById(R.id.searchmap_selector_shop_iv);

		// Thiết lập lại các icon cho image
		SearchMapGeneralLayout
				.updateFavoriteIcon(imageView, rowItem.isFavorite());

		// Cập nhật dữ liệu vào bảng Location
		/**
		UpdateDBThread updateSettingTable = new UpdateDBThread(context,
				rowItem, Constants.UPDATE_COMPANY_TABLE_TYPE, null);
		updateSettingTable.start();
		*/
	}

	/* private view holder class */
	private class ViewHolder {
		private ImageView locationLogo;
		private TextView locationName;
		private ExtendedTextView locationAddress;
		private ImageView locationCheckboxIv;
		private LinearLayout locationCheckboxLL;
	}
	
}

